let obj = new Map();
obj.set('name', 'yrq')
console.log(obj.get('name'))

console.log(obj.has('name')) // trie

obj.delete('name')

console.log(obj.has('name')) // false


let set = new Set();
set.add('xx')
set.add('xx1')
set.add('xx2')
set.add('xx3')
set.add({name: 'xx'})

console.log(set.keys()) // 返回一个包含集合中所有键的迭代器。
console.log(set.values()) // 返回一个包含集合中所有值得迭代器。

console.log(set, typeof(set))

//加强版  首次立即执行
function debounce(fn, delay) {
  let timer = null;
  let count = 0;
  let self = this
  return function () {
    let args= [...arguments] //取出参数
    clearTimeout(timer)  //先清除定时器
    if (!count) {//第一次点击的时候
      count++
      fn.apply(self,args)
      timer = setTimeout(() => {
        count = 0;
      }, delay)
    } else {
      count++
      timer = setTimeout(() => {
       fn.apply(self,args)
        count = 0;
      }, delay)
    }
  }
}
